/*
 * @(#) DateConverter.java
 *
 * Copyright 2002 - 2003 JIDE Software. All rights reserved.
 */
package com.element.converter.impl;

import com.element.converter.ConverterContext;

import java.util.Calendar;
import java.util.Date;

/**
 * Converter which converts Calendar to String and converts it back.
 */
public class CalendarConverter extends DateConverter {

	/**
	 * Creates a new CalendarConverter.
	 */
	public CalendarConverter() {
	}

	@Override
	public String toString(Object object, ConverterContext context) {
		if (object == null) {
			return "";
		} else if (!(object instanceof Calendar)) {
			return object.toString();
		} else {
			return super.toString(object, context);
		}
	}

	/**
	 * Converts from a String to a Calendar.
	 *
	 * @param string  the string to be converted.
	 * @param context the context. It could be DATETIME_CONTEXT, DATE_CONTEXT or TIME_CONTEXT.
	 * @return the Calendar object. If the string is null or empty, null will be returned. If the string cannot be
	 * parsed as a date, the string itself will be returned.
	 */
	@Override
	public Object fromString(String string, ConverterContext context) {
		if (string == null || string.trim().length() == 0) {
			return null;
		}

		Object date = super.fromString(string, context);
		Calendar calendar = Calendar.getInstance();
		if (date instanceof Date) {
			calendar.setTime((Date) date);
			return calendar;
		} else {
			return string;
		}
	}
}
